//
//  MainTabBar.swift
//  SinaWeibo
//
//  Created by 吉亚雄 on 2016/11/8.
//  Copyright © 2016年 吉亚雄. All rights reserved.
//

import UIKit

class MainTabBar: UITabBar {

   //默认的构造方法
    override init(frame: CGRect){
        super.init(frame: frame)
        setupUI()
    }
    
    //如果重写init（frame：）系统会默认为这个控件是通过代码创建
    required init?(coder aDecoder:NSCoder) {
        //只有默认报错的语句
        //如果有调用者通过 sb / xib创建了该对象 这个时候程序就崩溃
        super.init(coder: aDecoder)
        setupUI()
    }
    
    private func setupUI(){
        //添加撰写按钮
        addSubview(composeBtn)
    }
    
    
    //重写子视图布局
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //手动修改所有按钮位置
        //遍历所有子视图
        
        let w = self.bounds.width / 5
        let h = self.bounds.height
        let rect = CGRect(x:0,y:0,width:w,height:h)
        
        //定义递增变量
        var index:CGFloat = 0
        for subView in subviews{
            if subView.isKind(of: NSClassFromString("UITabBarButton")!) {
                //修改frame   offset 偏移（抵消，补偿）
               subView.frame = rect.offsetBy(dx: index * w,dy: 0)
             //跳过第三个按钮
             //   if index == 1 {
             //      index++
             // }
             //   index++
                
               //三目   index==1 则+2，否则+1
                index += index == 1 ? 2 : 1
            }
        }
        //设置撰写按钮的位置
        composeBtn.frame = rect.offsetBy(dx: w * 2,dy: 0)
        bringSubview(toFront: composeBtn)

    }

    
    //MARK: 懒加载  撰写按钮
    lazy var composeBtn: UIButton = {
        //UIButton() 自定义样式的按钮
        let btn = UIButton()
        
        //设置按钮
        btn.setBackgroundImage(UIImage(named:"tabbar_compose_button"),for:UIControlState.normal)
        btn.setBackgroundImage(UIImage(named:"tabbar_compose_button_highlighted"),for:UIControlState.highlighted)
        
        btn.setImage(UIImage(named:"tabbar_compose_icon_add"),for:UIControlState.normal)
        btn.setImage(UIImage(named:"tabbar_compose_icon_add_highlighted"),for:UIControlState.highlighted)
        btn.sizeToFit()
        return btn
    }()
    
    
    
}
